package com.wzl.demo_08_04;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;

import java.lang.invoke.VarHandle;

public class MainActivity extends AppCompatActivity {


    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intent = new Intent(this, MyService.class);
    }
    public void bind(View view) {
        // 绑定服务
        // 参数1：服务
        // 参数2：回调
        // 参数3：绑定类型
            // 参数3：BIND_AUTO_CREATE 自动创建
            // 参数3：BIND_IMPORTANT_BACKGROUND_SERVICE 重要后台服务
            // 参数3：BIND_DEBUG_UNBIND 调试
            // 参数3：BIND_NOT_FOREGROUND 不前台
            // 参数3：BIND_NOT_PERCEPTIVE_TASK_LAUNCH 不可感知任务启动
            // 参数3：BIND_WAIVE_PRIORITY 等待优先级
            // 参数3：BIND_IMPORTANT_TASK 重要任务
            // 参数3：BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS 允许后台活动启动
            // 参数3：BIND_ALLOW_TASK_REPARENTING 允许任务重新父级
            // 参数3：BIND_ADJUST_WITH_ACTIVITY 调整活动
            // 参数3：BIND_ABOVE_CLIENT 高于客户端
            // 参数3：BIND_AUTO_CREATE_WAIVE_PRIORITY 自动创建等待优先级
            // 参数3：BIND_IMPORTANT_BACKGROUND_SERVICE_WAIVE_PRIORITY 重要后台服务等待优先级
            // 参数3：BIND_FOREGROUND_SERVICE 前景服务
            // 参数3：BIND_FOREGROUND_SERVICE_WAIVE_PRIORITY 前景服务等待优先级
            // 参数3：BIND_FOREGROUND_NOT_IMPORTANT 前景不重要
            // 参数3：BIND_VISIBLE 服务可见
            // 参数3：BIND_VISIBLE_SERVICE_CONNECTION_STRING 可见服务连接字符串
            // 参数3：BIND_DEBUG_UNBIND_CHECKED 调试检查
            // 参数3：BIND_EXTERNAL_SERVICE_BINDING 外部服务绑定
            // 参数3：BIND_EXTERNAL_SERVICE_BINDING_NO_CHECK 检查
            // 参数3：BIND_IMPORTANT_BACKGROUND_SERVICE_LAUNCHER 重要后台服务启动器
            // 参数3：BIND_IMPORTANT_BACKGROUND_SERVICE_LAUNCHER_WAIVE_PRIORITY 重要后台服务启动器等待
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER 重要任务启动器
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY 重要任务启动器等待优先级
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY_CHECKED 检查
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY_CHECKED_NO_CREATE 检查
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY_NO_CREATE 不创建
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY_NO_CREATE_CHECKED 检查
            // 参数3：BIND_IMPORTANT_TASK_LAUNCHER_WAIVE_PRIORITY_NO_CREATE_CHECKED_NO_CREATE 检查
            // BIND_IMPORTANT 重要
        bindService(intent,conn,BIND_AUTO_CREATE);
    }
    public void unbind(View view) {
        // 解绑服务
        unbindService(conn);
    }
    public void random(View view) {
        // 随机数
        int nextInt = myService.nextInt();
        Log.i("MainActivity", "random: 随机数：" + nextInt);
    }

    private MyService myService;
    // 回调
    ServiceConnection conn =  new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            // 绑定成功
            Log.i("MainActivity", "onServiceConnected: 绑定成功");
            // 获取服务
            MyService.MyBinder myBinder = (MyService.MyBinder) service;
            myService = myBinder.getService();

            // 随机数
            int nextInt = myService.nextInt();
            Log.i("MainActivity", "onServiceConnected: 随机数：" + nextInt);
        }
        @Override
        public void onServiceDisconnected(ComponentName name) {
            // 解绑
            Log.i("MainActivity", "onServiceDisconnected: 解绑");
        }
    };



}